به کتاب "جنگو برای حرفهای ها" خوش آمدید، راهنمایی برای ساخت وبسایت های حرفهای با فریم ورک جنگو. بین ساختن یک "نیمچه اپ" که ساده و سریع ساخته میشود و ساختن یک محصول نهایی که مناسب دیپلوی و آماده پذیرش میلیون ها کاربر است، دریایی از تفاوت های آشکار وجود دارد. این کتاب پلی است برای گذر از این دریا.
وقتی برای اولین بار جنگو را نصب میکنید و یک پروژه جدید را میسازید تنظیمات به صورت پیشفرض برای توسعه محلی سریع (fast local delvelopment) مقدار دهی میشوند. و البته که این کار منطقی به نظر میرسد زیرا : نیازی نیست که سایت شما تمام ویژگی های اضافی مورد نیاز برای سایت های بزرگ را داشته باشد مگر آنکه به آن نیاز پیدا کنید. این تنظیمات پیشفرض شامل :( SQLite به عنوان دیتابیس پیش فرض ، وب سرور محلی ، هاستینگ فایل های Static، مدل یوزر پیش ساخته، و حالت DEBUG = TRUE) میباشد.
اما برای پروژه های تجاری باید در بسیاری از این تنظیمات پیشفرض بازنگری صورت بگیرد. البته که این بازنگری ها حتی برای افراد با تجربه نیز میتواند باعث سردرگمی شود. به عنوان مثال کدام دیتابیس برای محصول مناسب است؟ بسیاری از توسعه دهندگان جنگو (که خود من هم جزو این دسته هستم) PostgreSQL را انتخاب میکنند. در این کتاب نیز از این دیتابیس استفاده خواهد شد. هرچند که استفاده از MySQL نیز جای بحث دارد اما به طور کلی این تصمیم به ساختار و نیازمندی های پروژه مربوط است.
این کتاب بجای آنکه شما را در دریایی از انتخاب های متفاوت غرق کند، به شما یک رویکرد مناسب درباره ساخت یک وب سایت حرفه ای میدهد. کتاب موضوعاتی مانند ( استفاده از DOCKER در توسعه محلی و دیپلویمنت، استفاده از PostgreSQL ، مدل کاربر شخصی سازی شده، سیستم احراز هویت به همراه ایمیل، تست های جامع، متغییر های محلی، امنیت، بهبود کارایی و ... ) را شامل میشود
در انتهای کتاب شما یک وبسایت حرفهای خواهید ساخت و گام های حیاتی برای توسعه آن فرا خواهید گرفت. در اخر شما دانش و ابزار لازم برای ساخت یک وبسایت به عظمت اینستاگرام (بزرگترین وبسایت جنگویی) و یا ارتقا یک پروژه آماده جنگوی را خواهید داشت.
اگر شما تازه با جنگو و توسعه وب آشنا شدید این کتاب مناسب شما نمیباشد. بجای اینکه کتاب را بخوانید ، به شما توصیه میکنم کتاب جنگو برای مبتدیان را مطالعه کنید. این کتاب مفاهیم پایه را با ساخت پنج وبسایت (با ترتیب ساده به پیچیده) به شما آموزش میدهد. بعد از خواندن کتاب فوق میتوانید به سراغ این کتاب بیایید.
همچنین من کتابی با عنوان Django for APIs را نوشته ام که بر موضوع تبدیل وبسایت های جنگویی به Web Api ها متمرکز است. در عمل بیشتر توسعه دهندگان جنگو که به طور گروهی فعالیت میکنند، تمرکزشان بر روی توسعه و ساخت Back-end API ها است، و توسعه اپلیکیشن های full-stack که نیازمند front-end نیز میباشند جزو اهداف آنها نیست. خواندن کتاب Django for APIs میتواند به یادگیری شما کمک کند اما مطالعه آن برای استفاده از این کتاب الزامی نیست.
ما در بیشتر سرفصل های کتاب از Docker استفاده خواهیم کرد اما بهتر است که Python3, Django و Pipenv را به طور محلی (Local) نصب کرده باشید. همچنین Git نیز بخش مهمی را در زنجیره توسعه ایفا میکند پس میبایست آن را نصب کرده باشید. علاوه بر آن مابه طور گسترده از command line استفاده خواهیم کرد پس اگر نیاز به یادآوری آن دارید به اینجا سربزنید
فصل اول با با مقدمهای درباره Docker شروع میشود و در ادامه درمیابیم که چگونه یک پروژه جنگویی را Dockerize کنیم. در فصل دوم PostgreSQL معرفی شده که یک دیتابیس آماده به کار (Production-ready) است و میتواند در محیط داکر اجرا شود. فصل سوم با ساخت پروژه فروشگاه کتاب که، پروژه اصلی این کتاب نیز هست، شروع میشود. این پروژه شامل مدل کاربر شخصی سازی شده، قابلیت جستجو، آپلود عکس، تعیین دسترسی ها و ... میباشد.
فصل چهارم بر روی توسعه اپلیکیشن
pages
برای ساخت صفحه اصلی (Homepage)
متمرکز است و همچنین شامل مطالبی درباره تست کردن ویژگی های جدید سایت نیز میباشد.
در فصل پنجم به نحوه ثبت نام کاربر
(user registration flow)،
توسط اپلیکیشن
auth (built-in auth app)
اشاره خواهد شد.
فصل ششم مقدمه ای هست بر نحوه ای صحیح تنظیم فایل های Static مانند
CSS, JavaScript
و تصاویر.
به علاوه آن از
Bootstrap
به منظور استایل دهی به وب سایت استفاده خواهد شد.
فصل هفتم بر روی ثبت نام کاربر به صورت پیشرفته ، ورود فقط با ایمیل (email-only login) و احراز هویت با استفاده از شبکه های اجتماعی توسط پکیج django-allauth تمرکز دارد. فصل هشتم متغییر های محلی (environment variables) و Best practice های مرسوم در جامعه برنامه نویسان جنگو را معرفی میکند. فصل نهم مطالبی درباره ایمیل در جنگو و استفاده از سرویس دهنده های ایمیل در پروژه ارائه میدهد.
ساختار نیمه اول این کتاب عمدا به این صورت طراحی شده. وقتی که شما در حال توسعه پروژه هستید مطمئنا خیلی از روش هایی که در فصل های ۳ الی ۹ عنوان شده را مکررا استفاده خواهید کرد. هر پروژه جدید به ساختار هایی مانند تنظیمات صحیح، احراز هویت کاربران و متغییر های محلی نیاز دارد. پس با این بخش کتاب به عنوان یک دفترجه راهنما رفتار کنید. نیمه دوم کتاب بر روی ویژگی های مربوط به پروژه اصلی (فروشگاه کتاب) متمرکز است.
فصل دهم با ساخت مدل ها، تست ها و صفحه ها (pages) برای اپ book شروع میشود. همچنین درباره تبدیل ID به SLUG و تبدیل SLUG به UUID نیز بحث میشود. فصل یازده حول محور اضافه کردن ویژگی نوشتن نقد و نظر (review) برای کتاب های فروشگاه است.
در فصل دوازدهم ویژگی آپلود تصاویر به وبسایت اضافه میشود. فصل سیزدهم درباره تنظیم دسترسی های سایت میباشد. قسمت جستوجو برای همه سایت ها به خصوص سایت های فروشگاهی یک ویژگی حیاتی است در فصل چهارده قابلیت جستوجو با فیلتر های مخلتف را خواهیم آموخت.
در فصل پانزدهم تمرکزمان به سوی افزایش کارایی معطوف میشود و با ابزارهایی مانند django-debug-toolbar اشنا میشویم تا بتوانیم query ها و template و... را تحت نظر بگیریم.
فصل پانزدهم مطالب مربوط به امنیت را پوشش میدهد و تنظیمات اولیه و ثانویه ای که باید به محیط محصول اضافه شوند را معرفی میکند. فصل هفدهم درباره دیپلویمنت است و مطالبی درباره ALLOWED_HOSTS و Local static در آن عنوان میشود.
در اخر نیز جمع بندی مطالب عنوان شده.
در کتاب مثال های کدنویسی شده بسیاری زیادی وجود دارد که فرمت آنها به صورت زیر است :
# This is python code
print(Hello, World)
برای اختصار در این کتاب از ... برای نشان دادن کد هایی که دست نخورده باقی ماندند استفاده میشود. به عنوان مثال ما این تکه کد را آپدیت کردیم
def make_my_website():
# Code
print("All done!")
همچنین ما از command line ،برای اجرای کد ها استفاده خواهیم کرد که فرمت آنها مشابه فرمت سنتی سیستم های UNIX است و با علامت $ اغاز میشود
$ echo "hello, world"
نتیجه دستور بالا به صورت زیر است :
hello, world
عمدتا دستور و نتیجه آن در این کتاب به صورت زیر میباشد. دقت کنید که دستور علامت $ را دارد اما نتیجه $ ندارد.
$ echo "hello, world"
hello, world
.یک ویرایشگر متن مدرن برای هر توسعه دهنده نرم افزار الزامی است آنها علاوه بر ویژگیهایشان، افزونههایی برای تصحیح ارور در کدهای پایتون دارند. معروف ترین آنها عبارت اند از Black, autopep8 و YAPF
برخی برنامه نویسان قدیمی ممکن است Vim و Emacs را ترجیح بدهند اما تازهکارها یا برخی برنامه نویسان باتجربه از ادیتور های مثل VSCode, Atom, Sublime Text و PyCharm .استفاده میکنند
جنگو یک انتخاب عالی برای توسعه دهندگانی است که میخواهند یک وب اپلیکیشن مدرن و قوی اما با تعداد خط کد کم بسازند. محبوبیتش درحال افزایش است و به صورت مداوم در حال توسعه و آپدیت میباشد و از آزمون های سایت های برزگ سربلند بیرون آمده است.
در فصل بعدی درمیابیم که چگونه با Docker .هر کامپیوتری را برای نصب جنگو آماده کنیم